package com.briup.smartlab.util;

import lombok.Data;

/**
 * Restful风格API接口统一响应格式。
 */
@Data
public class Response {
	private Integer code;//自定义响应状态码。
    private String status;//自定义响应状态描述
	private Object data;//自定义返回数据

    /**
     * 默认响应携带数据
     */
    private Response(Object data) {
        this.code = 200;
        this.status = "操作成功";
        this.data = data;
    }

    /**
     *  默认的成功响应，不携带数据
     */
    private Response() {
        this(null);
    }

    /**
     *  自定义响应，不携带数据
     */
    private Response(Integer code, String status) {
    	 this(code,status,null);
    }
    /**
     *  自定义响应,携带数据
     */
    private Response(Integer code, String status, Object data) {
        this.status = status;
        this.code = code;
        this.data = data;
    }

    /**
     * 200成功，不携带数据的响应返回，当新增，修改，删除操作是返回信息
     */
    public static <T> Response success() {
        return new Response(null);
    }
    /**
     * 200成功，带数据的响应返回，当查询操作是返回信息
     */
    public static <T> Response success(Object data) {
        return new Response(data);
    }


    /**
     * 操作失败，返回的响应，携带数据，携带错误信息
     * 默认是500
     */
    public static  Response error(String status) {
        return error(500,status);
    }
    public static  Response error() {
        return error(500,"操作失败");
    }
    
    public static  Response error(int code,String status){
        return error(code,status,null);
    }	

    public static Response error(int code,String status,Object data) {
        return new Response(code,status,data);
    }	
}